package com.zzh.lib.core.wifi;

import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;

/**
 * Created by ZZH on 2022/3/24.
 *
 * @Date: 2022/3/24
 * @Email: zzh_hz@126.com
 * @QQ: 1299234582
 * @Author: zzh
 * @Description: 网络监测，监测网络是否可用。
 */
public abstract class NetworkWatchCallback {


    /**
     * 当框架连接并声明一个新的网络可供使用时调用。
     *
     * @param network 新网
     */
    public void onAvailable(Network network) {
    }

    /**
     * 无线网可用，并且能够访问外网。（有条件限制：设备只在局域网使用，则不能使用此方式判断是否有可用的网络。）
     *
     * @param network
     */
    public void onNetworkAvailable(Network network) {
    }

    /**
     * 当网络即将丢失时调用，通常是因为没有未完成的请求。
     *
     * @param network
     * @param maxMsToLive
     */
    public void onLosing(Network network, int maxMsToLive) {
    }

    /**
     * 断开网络
     * 当网络断开连接或不再满足此请求或回调时调用
     *
     * @param network 网络状况
     */
    public void onLost(Network network) {
    }

    /**
     * 如果在 ConnectivityManager.requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback, int)
     * 调用中指定的超时时间内没有找到网络，或者如果请求的网络请求无法完成（无论是否指定了超时），则调用）。
     */
    public void onUnavailable() {
    }

    /**
     * 当与此请求对应的网络更改功能但仍满足请求的条件时调用
     *
     * @param network             网络
     * @param networkCapabilities 网络信息
     */
    public void onCapabilitiesChanged(Network network,
                                      NetworkCapabilities networkCapabilities) {
    }

    /**
     * 当此请求对应的网络更改 LinkProperties 时调用。
     *
     * @param network
     * @param linkProperties
     */
    public void onLinkPropertiesChanged(Network network,
                                        LinkProperties linkProperties) {
    }

    /**
     * 当对指定网络的访问被阻止或解除阻止时调用
     *
     * @param network 无线网
     * @param blocked 是否被阻止
     */
    public void onBlockedStatusChanged(Network network, boolean blocked) {
    }
}
